CedarBackup3.actions.util

Implements action-related utilities :author: Kenneth J. Pronovici <pronovic@ieee.org>

Module Contents

CedarBackup3.actions.util.logger
CedarBackup3.actions.util.MEDIA_LABEL_PREFIX = CEDAR BACKUP
CedarBackup3.actions.util.findDailyDirs(stagingDir, indicatorFile)

Returns a list of all daily staging directories that do not contain the indicated indicator file. :returns: List of absolute paths to daily staging directories

CedarBackup3.actions.util.createWriter(config)

Creates a writer object based on current configuration.

This function creates and returns a writer based on configuration. This is done to abstract action functionality from knowing what kind of writer is in use. Since all writers implement the same interface, there’s no need for actions to care which one they’re working with.

Currently, the cdwriter and dvdwriter device types are allowed. An exception will be raised if any other device type is used.

This function also checks to make sure that the device isn’t mounted before creating a writer object for it. Experience shows that sometimes if the device is mounted, we have problems with the backup. We may as well do the check here first, before instantiating the writer.

Parameters

config – Config object

Returns

Writer that can be used to write a directory to some media

Raises
  • ValueError – If there is a problem getting the writer

  • IOError – If there is a problem creating the writer object

CedarBackup3.actions.util.writeIndicatorFile(targetDir, indicatorFile, backupUser, backupGroup)

Writes an indicator file into a target directory. :param targetDir: Target directory in which to write indicator :param indicatorFile: Name of the indicator file :param backupUser: User that indicator file should be owned by :param backupGroup: Group that indicator file should be owned by

Raises

IOException – If there is a problem writing the indicator file

CedarBackup3.actions.util.getBackupFiles(targetDir)

Gets a list of backup files in a target directory.

Files that match INDICATOR_PATTERN (i.e. "cback.store", "cback.stage", etc.) are assumed to be indicator files and are ignored.

Parameters

targetDir – Directory to look in

Returns

List of backup files in the directory

Raises

ValueError – If the target directory does not exist

CedarBackup3.actions.util.checkMediaState(storeConfig)

Checks state of the media in the backup device to confirm whether it has been initialized for use with Cedar Backup.

We can tell whether the media has been initialized by looking at its media label. If the media label starts with MEDIA_LABEL_PREFIX, then it has been initialized.

The check varies depending on whether the media is rewritable or not. For non-rewritable media, we also accept a None media label, since this kind of media cannot safely be initialized.

Parameters

storeConfig – Store configuration

Raises

ValueError – If media is not initialized

CedarBackup3.actions.util.initializeMediaState(config)

Initializes state of the media in the backup device so Cedar Backup can recognize it.

This is done by writing an mostly-empty image (it contains a “Cedar Backup” directory) to the media with a known media label.

Note: Only rewritable media (CD-RW, DVD+RW) can be initialized. It doesn’t make any sense to initialize media that cannot be rewritten (CD-R, DVD+R), since Cedar Backup would then not be able to use that media for a backup.

Parameters

config – Cedar Backup configuration

Raises
  • ValueError – If media could not be initialized

  • ValueError – If the configured media type is not rewritable

CedarBackup3.actions.util.buildMediaLabel()

Builds a media label to be used on Cedar Backup media. :returns: Media label as a string