diff options
author | Jenkins <jenkins@review.openstack.org> | 2014-09-23 07:43:39 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2014-09-23 07:43:39 +0000 |
commit | d511338da570fc921bb0bd0aaedb52cd78af6682 (patch) | |
tree | 7f86d66b94b15536af539a2a044b63210579b0e7 | |
parent | e24bd6ba1b35af80a4a386c8b46ae2d5e1a2d514 (diff) | |
parent | 00b2b61bd52af12f23df5ea36e46f4614be034e6 (diff) | |
download | trove-d511338da570fc921bb0bd0aaedb52cd78af6682.tar.gz |
Merge "Delete backup created during replication"
-rw-r--r-- | trove/taskmanager/manager.py | 18 | ||||
-rwxr-xr-x | trove/taskmanager/models.py | 5 | ||||
-rw-r--r-- | trove/tests/api/replication.py | 7 |
3 files changed, 21 insertions, 9 deletions
diff --git a/trove/taskmanager/manager.py b/trove/taskmanager/manager.py index e8827d37..4e299ee7 100644 --- a/trove/taskmanager/manager.py +++ b/trove/taskmanager/manager.py @@ -14,10 +14,11 @@ # under the License. from trove.common.context import TroveContext -import trove.extensions.mgmt.instances.models as mgmtmodels +from trove.backup.models import Backup import trove.common.cfg as cfg from trove.common import exception from trove.common import strategy +import trove.extensions.mgmt.instances.models as mgmtmodels from trove.openstack.common import log as logging from trove.openstack.common import importutils from trove.openstack.common import periodic_task @@ -93,12 +94,15 @@ class Manager(periodic_task.PeriodicTasks): snapshot = instance_tasks.get_replication_master_snapshot(context, slave_of_id) - instance_tasks.create_instance(flavor, image_id, databases, users, - datastore_manager, packages, - volume_size, - snapshot['dataset']['snapshot_id'], - availability_zone, root_password, - nics, overrides, None) + try: + instance_tasks.create_instance(flavor, image_id, databases, users, + datastore_manager, packages, + volume_size, + snapshot['dataset']['snapshot_id'], + availability_zone, root_password, + nics, overrides, None) + finally: + Backup.delete(context, snapshot['dataset']['snapshot_id']) instance_tasks.attach_replication_slave(snapshot) diff --git a/trove/taskmanager/models.py b/trove/taskmanager/models.py index bd524fc5..d9934698 100755 --- a/trove/taskmanager/models.py +++ b/trove/taskmanager/models.py @@ -22,6 +22,7 @@ from eventlet import greenthread from novaclient import exceptions as nova_exceptions from trove.backup import models as bkup_models +from trove.backup.models import Backup from trove.backup.models import BackupState from trove.backup.models import DBBackup from trove.cluster.models import Cluster @@ -357,7 +358,11 @@ class FreshInstanceTasks(FreshInstance, NotifyMixin, ConfigurationMixin): "for new replica %(replica)s.") % {'source': slave_of_id, 'replica': self.id}) err = inst_models.InstanceTasks.BUILDING_ERROR_SLAVE + Backup.delete(context, snapshot_info['id']) self._log_and_raise(e, msg, err) + except Exception: + Backup.delete(context, snapshot_info['id']) + raise def report_root_enabled(self): mysql_models.RootHistory.create(self.context, self.id, 'root') diff --git a/trove/tests/api/replication.py b/trove/tests/api/replication.py index e60a29c7..fd2a7657 100644 --- a/trove/tests/api/replication.py +++ b/trove/tests/api/replication.py @@ -90,8 +90,6 @@ class WaitForCreateSlaveToFinish(object): return True else: assert_true(instance.status in ['BUILD', 'BACKUP']) - # if instance_info.volume is not None: - # assert_equal(instance.volume.get('used', None), None) return False poll_until(result_is_active) @@ -115,6 +113,11 @@ class VerifySlave(object): def test_correctly_started_replication(self): poll_until(slave_is_running()) + @test(runs_after=[test_correctly_started_replication]) + def test_backup_deleted(self): + backup = instance_info.dbaas.instances.backups(instance_info.id) + assert_equal(len(backup), 0) + @test(depends_on=[test_correctly_started_replication]) def test_slave_is_read_only(self): cmd = "mysql -BNq -e \\\'select @@read_only\\\'" |