Add Redis backup/restore functionality

Performs backup using the Redis client to persist data to the file
system, then streams the result to swift.

Performs restore by replacing the data file with the Swift backup
and starting the server again in the correct manner.

Note: Running the int-tests require that volume_support is set
to false in the test.conf file.

To run:
./redstack install
./redstack kick-start redis
(vi /etc/trove/test.conf and change volume_support to false)
./redstack int-tests --group=backup (or --group=redis_supported)

Co-Authored-by: hardy.jung <hardy.jung@daumkakao.com>
Co-Authored-by: Peter Stachowski <peter@tesora.com>

Depends-On: I633273d438c22f98bef2fd1535730bcdb5e5cff0
Implements: blueprint redis-backup-restore
Change-Id: I1bd391f8e3f7de12396fb41000e3c55be23c04ee
This commit is contained in:
Peter Stachowski
2015-08-07 18:02:16 -04:00
parent 368fd674ce
commit 8f8a758539
15 changed files with 967 additions and 56 deletions

View File

@@ -553,7 +553,7 @@ redis_opts = [
help='List of UDP ports and/or port ranges to open '
'in the security group (only applicable '
'if trove_security_groups_support is True).'),
cfg.StrOpt('backup_strategy', default=None,
cfg.StrOpt('backup_strategy', default='RedisBackup',
help='Default strategy to perform backups.',
deprecated_name='backup_strategy',
deprecated_group='DEFAULT'),
@@ -572,11 +572,15 @@ redis_opts = [
help='Whether to provision a Cinder volume for datadir.'),
cfg.StrOpt('device_path', default=None,
help='Device path for volume if volume support is enabled.'),
cfg.StrOpt('backup_namespace', default=None,
cfg.StrOpt('backup_namespace',
default="trove.guestagent.strategies.backup.experimental."
"redis_impl",
help='Namespace to load backup strategies from.',
deprecated_name='backup_namespace',
deprecated_group='DEFAULT'),
cfg.StrOpt('restore_namespace', default=None,
cfg.StrOpt('restore_namespace',
default="trove.guestagent.strategies.restore.experimental."
"redis_impl",
help='Namespace to load restore strategies from.',
deprecated_name='restore_namespace',
deprecated_group='DEFAULT'),