gavo.rsc.dumping module

DaCHS supports dump/restore operations on tables or set of tables. This module implements the underlying file format and some utilities.

The file format itself is a tar.gz file with an index.txt consisting of lines

file_name table-id

followed by the files. Table id is DaCHS’s usual rd-id#table-id. The files contain binary dump material.

gavo.rsc.dumping.create(args)[source]
gavo.rsc.dumping.createDump(tableIds, destFile, binary=True)[source]

writes a DaCHS dump of tableIds to destFile.

tableIds is a list of rd-id#table-id identifiers (all must resolve), destFile is a file object opened for writing.

gavo.rsc.dumping.getTablesForIds(tableIds, connection)[source]

returns a list of validated dbtables of all tableIds.

This will raise an exception if any table id or database table doesn’t exist, or if the on-disk schema doesn’t match the definition.

For convenience in internal use, tableIds that already are table instances will not be touched. That’s a bit tricky, though, because you can have data from different transactions when you do that.

gavo.rsc.dumping.iterDbTables(objectId, connection)[source]

iterates over dbtable objects referenced by objectId.

objectId can reference a table def or an RD (in which case all onDisk tables from it are returned). Or it can be a table already.

gavo.rsc.dumping.iterTableInfos(dumpFile)[source]

iterates over table info tuples from an open dump file.

Each tuple has the member name, the table id, a boolean whether the table definion is accessible, the UTC unix time the dump was made, and the size of the dump.

gavo.rsc.dumping.load(args)[source]
gavo.rsc.dumping.ls(args)[source]
gavo.rsc.dumping.main()[source]

does the user interaction.

gavo.rsc.dumping.parseIndexFile(srcFile)[source]

parses our index.txt file format and returns (member-name, table-id) tuples.

srcFile is an open binary file, probably from TarFile.extractfile.

If you change the index file format, you’ll have to change this and the corresponding code in createDump.

gavo.rsc.dumping.restoreDump(dumpFile)[source]

restores a dump.

dumpFile is an open file object containing a file created by createDump.

This comprises recrating all mentioned tables, copying in the associated data, and re-creating all indices.

Each table is handled in a separate transaction, we do not stop if a single restore has failed.