Esempio n. 1
0
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 {}
Esempio n. 2
0
    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])
Esempio n. 3
0
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
Esempio n. 4
0
 def get_logs(self):
     for e in self.redis_client.lrange(self.key, 0, -1):
         try:
             yield json.loads(e)
         except ValueError:
             continue
Esempio n. 5
0
 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)
Esempio n. 6
0
 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)