
Public Member Functions | |
| def | __init__ |
| def | __del__ |
| def | prepare_read |
| def | bckfile |
| def | bcksumfile |
| def | mimetype |
| def | push |
| def | flush |
| def | pull |
| def | items |
| def | all_names |
| def | is_needed |
Public Attributes | |
| name | |
| checksum | |
| tarfile | |
| tmpfile | |
Private Member Functions | |
| def | __append_checksum |
| def py::qo::backup::savepoint::__init__ | ( | self, | ||
| bckname, | ||||
mode = "r" | ||||
| ) |
Reimplemented in py::qo::share::overlay_archive.
00058 : 00059 self.name = bckname 00060 if mode == "r" : 00061 self.checksum = xml.dom.minidom.parse(self.bcksumfile()) 00062 self.tarfile = None 00063 else : 00064 tmpfd, self.tmpfile = tempfile.mkstemp() 00065 self.checksum = qo.xmlutil.create_document("checksum") 00066 self.tarfile = tarfile.open(self.tmpfile, mode=mode+":bz2") 00067 os.close(tmpfd) 00068 def __del__( self ) :
| def py::qo::backup::savepoint::__del__ | ( | self | ) |
| def py::qo::backup::savepoint::prepare_read | ( | self | ) |
| def py::qo::backup::savepoint::bckfile | ( | self | ) |
Reimplemented in py::qo::share::overlay_archive.
00076 : 00077 return os.path.join(qocfg.get_backup_dir(), self.name + ".qobck") def bcksumfile( self ) :
| def py::qo::backup::savepoint::bcksumfile | ( | self | ) |
Reimplemented in py::qo::share::overlay_archive.
00078 : 00079 return os.path.join(qocfg.get_backup_dir(), self.name + ".qobcksum") def mimetype( self ) :
| def py::qo::backup::savepoint::mimetype | ( | self | ) |
| def py::qo::backup::savepoint::__append_checksum | ( | self, | ||
| name, | ||||
| checksum | ||||
| ) | [private] |
| def py::qo::backup::savepoint::push | ( | self, | ||
| name, | ||||
| xmldoc | ||||
| ) |
| def py::qo::backup::savepoint::flush | ( | self | ) |
00097 : 00098 self.tarfile.close() 00099 if self.is_needed() : 00100 print "savepoint created" 00101 shutil.move(self.tmpfile, self.bckfile()) 00102 open(self.bcksumfile(),'w').write(self.checksum.toprettyxml(encoding='utf-8')) 00103 return True 00104 else : 00105 print "savepoint ignored" 00106 os.unlink(self.tmpfile) 00107 return False 00108 def pull( self, name ) :
| def py::qo::backup::savepoint::pull | ( | self, | ||
| name | ||||
| ) |
| def py::qo::backup::savepoint::items | ( | self | ) |
00114 : 00115 def extract( element ) : 00116 return element.getAttribute("name"), element.getAttribute("md5") 00117 return map(extract, self.checksum.getElementsByTagName("file")) 00118 def all_names( self ) :
| def py::qo::backup::savepoint::all_names | ( | self | ) |
| def py::qo::backup::savepoint::is_needed | ( | self | ) |
00122 : 00123 all = filter(lambda x: x <= self.name, sorted(self.all_names())) 00124 if len(all) == 0 : 00125 # first backup 00126 return True 00127 00128 try : 00129 last_sp = self.__class__(all[-1],"r") 00130 except : 00131 traceback.print_exc() 00132 return True 00133 00134 my_d = dict(self.items()) 00135 last_d = dict(last_sp.items()) 00136 00137 if sorted(my_d.keys()) != sorted(last_d.keys()) : 00138 # file name/count has changed 00139 return True 00140 00141 for name, chk in my_d.iteritems() : 00142 if chk != last_d[name] : 00143 # file has changed 00144 return True 00145 00146 return False 00147 00148 def build_xml_from_model( model, only_fields = None, exclude_fields = [] ) :
1.5.3