+++ /dev/null
-'''
-@author: Nicholas Alexander
-
-Created on 07/07/2009
-
-Module with functions used to create backup metadata xml file with same format
-as osso-backup metadata.
-
-'''
-import os
-
-import xml.dom.minidom
-
-from backup.pcsbackuputils import getSize
-from pcsdevicemanager import PcsDeviceManager
-
-
-def createXml(backup_info, filesByCategory, host_ip):
- doc = xml.dom.minidom.Document()
- root = doc.createElement("backup-metadata")
- doc.appendChild(root)
- _appendSizeNode(backup_info, doc, root)
- _appendFilesNumberNode(backup_info, doc, root)
- _appendTimeNode(backup_info, doc, root)
- _appendProtectedNode(doc, root)
- _appendDeviceInfoNode(doc, root, host_ip)
- backupFullPath = os.path.join(backup_info.getPath(), backup_info.getName())
- _appendCategoriesNode(doc, root, filesByCategory, backupFullPath)
- metadata_path = os.path.join(backupFullPath, "backup.metadata")
- file = open(metadata_path, "w")
- doc.writexml(file)
- file.close()
-
-
-
-def _appendSizeNode(backupInfo, document, node):
- sizeNode = document.createElement("size")
- size = document.createTextNode(str(backupInfo.getSize()))
- sizeNode.appendChild(size)
- node.appendChild(sizeNode)
-
-def _appendFilesNumberNode(backupInfo, document, node):
- filesNode = document.createElement("number-of-files")
- files = document.createTextNode(str(backupInfo.getFilesNumber()))
- filesNode.appendChild(files)
- node.appendChild(filesNode)
-
-def _appendTimeNode(backupInfo, document, node):
- timeNode = document.createElement("timestamp")
- time = document.createTextNode(str(int(backupInfo.getTime())))
- timeNode.appendChild(time)
- node.appendChild(timeNode)
-
-def _appendProtectedNode(document, node):
- protectedNode = document.createElement("protected")
- protected = document.createTextNode("false")
- protectedNode.appendChild(protected)
- node.appendChild(protectedNode)
-
-def _appendDeviceInfoNode(document, node, hostIp):
- deviceManager = PcsDeviceManager()
- deviceManager.loadDevices()
- device = deviceManager.getDevice(hostIp)
- versionNode = document.createElement("device-version")
- version = document.createTextNode(device.ossoBackup)
- versionNode.appendChild(version)
- node.appendChild(versionNode)
-
-def _appendCategoriesNode(document, node, filesByCategory, backupPath):
- categories = document.createElement("categories")
- for category in filesByCategory.keys():
- categoryPath = os.path.join(backupPath, "%s.zip" % category)
- size = getSize(categoryPath)
- if size == False:
- continue
- categoryNode = document.createElement("%s" % category)
- categorySize = document.createElement("size")
- categoryFiles = document.createElement("number-of-files")
- filesText = document.createTextNode(str(filesByCategory[category]))
- sizeText = document.createTextNode(str(size))
- categorySize.appendChild(sizeText)
- categoryFiles.appendChild(filesText)
- categoryNode.appendChild(categorySize)
- categoryNode.appendChild(categoryFiles)
- categories.appendChild(categoryNode)
- node.appendChild(categories)
-
\ No newline at end of file