def read_metadata(zipfile): """Reads and returns metadata from a backup zipfile.""" for info in zipfile.infolist(): basename = os.path.basename(info.filename) if basename == METADATA_FILENAME: meta_file = zipfile.read(info.filename) return kbjson.loads(meta_file) return {}
def assertMetadata(self, backup_dir, when=None, site_name="My Kegbot", num_media_files=0): when = when or self.now backup.verify_backup_directory(backup_dir) metadata_file = os.path.join(backup_dir, backup.METADATA_FILENAME) metadata_json = kbjson.loads(open(metadata_file).read()) self.assertEqual(when, metadata_json[backup.META_CREATED_TIME]) self.assertEqual(site_name, metadata_json[backup.META_SERVER_NAME]) self.assertEqual(num_media_files, metadata_json[backup.META_NUM_MEDIA_FILES]) self.assertEqual(get_version(), metadata_json[backup.META_SERVER_VERSION])
def verify_backup_directory(backup_dir): metadata_file = os.path.join(backup_dir, METADATA_FILENAME) if not os.path.exists(metadata_file): raise InvalidBackup("Metadata file does not exist") if not os.path.exists(metadata_file): raise InvalidBackup("SQL dumpfile does not exist") metadata = kbjson.loads(open(metadata_file, "r").read()) format = metadata.get(META_BACKUP_FORMAT) if format != BACKUP_FORMAT: raise InvalidBackup("Unsupported backup format: {}".format(format)) return metadata
def get_logs(self): for e in self.redis_client.lrange(self.key, 0, -1): try: yield json.loads(e) except ValueError: continue
def delete(self, subpath, data={}, follow=False, **extra): response = self.client.delete("/api/%s" % subpath, data=data, follow=follow, **extra) return response, kbjson.loads(response.content)
def post(self, subpath, data={}, follow=False, **extra): response = self.client.post('/api/%s' % subpath, data=data, follow=follow, **extra) return response, kbjson.loads(response.content)